#include"head.h"

int Menu(Information s[], int n)/*主菜单*/
{
	
	while(1)
	{ 
	    system("CLS");
    	printf("\n\t\t   教职工管理软件");
	    printf("\n\t\t--------------------");
	    printf("\n\t\t   1 数据输入");
	    printf("\n\t\t   2 数据输出");
	    printf("\n\t\t   3 数据查询");
	    printf("\n\t\t   4 数据插入");
	    printf("\n\t\t   5 数据删除");
	    printf("\n\t\t   6 数据修改");
	    printf("\n\t\t   7 数据统计");
	    printf("\n\t\t   8 数据计算");
	    printf("\n\t\t   9 表格展示");
		printf("\n\t\t   0 退出");
		printf("\n\t\t--------------------");
		printf("\n\t\t   请选择(0-9): ");  
		
		int option; 
		while(scanf("%d",&option)==0)
		{
			printf("输入错误，请重新输入：\n");
			fflush(stdin);
		}

		switch(option)
		{
			case 0:
			{
				return 0;
			}
			case 1:
			{  
				n=Menu6(s,n);
				break;
			}
			case 2:
			{
				Traversal(s, n);
				break;
			}
			case 3:
			{
				char varname[20];
				FindSname(s, n, varname);
				break;
			}
			case 4:
			{
				n=Menu1(s, n);
				break;
			}
			case 5:
			{
				n=Menu2(s, n);
				break;
			}
			case 6:
			{
				Change(s, n);
				n=WriteInformation(s, n);
				break;
			}
			case 7:
			{
				Menu3(s, n);
				break;
			}
			case 8:
			{
				Menu4(s, n);
				break;
			}
			case 9:
			{
				Menu5(s, n);
				break;
			}
			default: continue;  
	    }
	    system("pause");
    }
    
    return n;
}

int Menu1(Information s[], int n)/*插入菜单*/
{
	while(1)
	{
		system("cls");
		printf("\n\t\t   1 插入到第一个前面");
		printf("\n\t\t   2 插入到最后一个后面");
		printf("\n\t\t   3 插入到指定姓名前面");
		printf("\n\t\t   0 退出");
		printf("\n\t\t   请选择(0-3)");
		
		int option; 
		while(scanf("%d",&option)==0)
		{
			printf("输入错误，请重新输入：\n");
			fflush(stdin);
		}
		
		switch(option)
		{
			case 1:
			{
				n=InsectFirst(s, n);
				Traversal(s, n);
				n=WriteInformation(s, n);
				break;	
			}	
			case 2:
			{
				n=InsectLast(s, n);
				Traversal(s, n);
				n=WriteInformation(s, n);
				break;
			}
			case 3:
			{	
				n=InsectAppoint(s, n);
				Traversal(s, n);
				n=WriteInformation(s, n);
				break;
			}
			case 0:
			{
				return n;
			} 
			default: continue;  
	    }
	    system("pause");
	}	
	return n;
}

int Menu2(Information s[], int n)/*删除菜单*/
{ 
	while(1)
	{
		system("cls");
		printf("\n\t\t   1 删除第一个");
		printf("\n\t\t   2 删除最后一个");
		printf("\n\t\t   3 删除指定姓名");
		printf("\n\t\t   0 退出");
		printf("\n\t\t   请选择(0-3)");
		
		int option; 
		while(scanf("%d",&option)==0)
		{
			printf("输入错误，请重新输入：\n");
			fflush(stdin);
		}
		
		switch (option)
		{
			case 1:
			{
				n=RemoveFirst(s, n);
				Traversal(s, n);
				n=WriteInformation(s, n);
				break;	
			}	
			case 2:
			{
				n=RemoveLast(s, n);
				Traversal(s, n);
				n=WriteInformation(s, n);
				break;
			}
			case 3:
			{
				n=RemoveAppoint(s, n);
				Traversal(s, n);
				n=WriteInformation(s, n);
				break;
			}
			case 0:
			{
				return n;
			}
			default: continue;  
	    }
	    system("pause");
	}
	return n;
}

void Menu3(Information s[], int n)/*统计菜单*/
{
	while(1)
	{
		system("cls");
		printf("\n\t\t   1 按性别统计人数 ");
		printf("\n\t\t   2 按所属部门统计人数 ");
		printf("\n\t\t   3 按文化程度统计人数 ");
		printf("\n\t\t   4 按民族统计人数 ");
		printf("\n\t\t   5 按加班时间统计人数 ");
		printf("\n\t\t   6 按旷工时间统计人数 ");
		printf("\n\t\t   0 退出");
		printf("\n\t\t   请选择(0-6)");
		
		int option; 
		while(scanf("%d",&option)==0)
		{
			printf("输入错误，请重新输入：\n");
			fflush(stdin);
		}
		
		switch (option)
		{
			case 1:
			{
				Count_Gender(s, n);
				break;	
			}	
			case 2:
			{
				Count_section(s, n);
				break;
			}
			case 3:
			{
				Count_culturestandard(s, n);
				break;
			}
			case 4:
			{
				Count_nation(s, n);	
				break;
			}
			case 5:
			{
				Count_add_work(s, n);
				break;
			}
			case 6:
			{
				Count_free_work(s, n);
				break;
			}
			case 0:
			{
				return ;
			}
			default: continue;  
	    }
	    system("pause");
	}
	return ;
}

void Menu4(Information s[], int n)	/*计算菜单*/
{
	while(1)
	{
		system("cls");
		printf("\n\t\t   1 计算指定职员的月工资 ");
		printf("\n\t\t   2 计算部门月工资 ");
		printf("\n\t\t   3 计算全校月工资 ");
		printf("\n\t\t   0 退出");
		printf("\n\t\t   请选择(0-6)");
		
		int option; 
		while(scanf("%d",&option)==0)
		{
			printf("输入错误，请重新输入：\n");
			fflush(stdin);
		}
		
		switch (option)
		{
			case 1:
			{
				Calculate_individual(s, n);
				break;	
			}	
			case 2:
			{
				Calculate_section(s, n);
				break;
			}
			case 3:
			{
				Calculate_all_school(s,n);
				break;
			}
			case 0:
			{
				return ;
			}
			default: continue;  
	    }
	    system("pause");
	}
	return;	
}

void Menu5(Information s[], int n)	/*工资展示菜单*/
{
	while(1)
	{
		system("cls");
		printf("\n\t\t   1 展示工资计算表 ");
		printf("\n\t\t   2 展示个人工资单 ");
		printf("\n\t\t   3 展示部门工资单 ");
		printf("\n\t\t   4 展示工资汇总表 ");
		printf("\n\t\t   0 退出");
		printf("\n\t\t   请选择(0-4)");
		
		int option; 
		while(scanf("%d",&option)==0)
		{
			printf("输入错误，请重新输入：\n");
			fflush(stdin);
		}
		
		switch (option)
		{
			case 1:
			{
				Show_Calculate(s, n);
				break;	
			}	
			case 2:
			{
				Show_individual(s, n);
				break;
			}
			case 3:
			{
				Show_section(s ,n);
				break;
			}
			case 4:
			{
				Show_All(s, n);
				break;
			}
			case 0:
			{
				return ;
			}
			default: continue;  
	    }
	    system("pause");
	}
	return ;
}

int Menu6(Information s[], int n)	/*输入菜单*/
{
	while(1)
	{
		system("cls");
		printf("\n\t\t   1 键盘输入信息 ");
		printf("\n\t\t   2 从文件中读取 ");
		printf("\n\t\t   0 退出");
		printf("\n\t\t   请选择(0-2)");
		
		int option; 
		while(scanf("%d",&option)==0)
		{
			printf("输入错误，请重新输入：\n");
			fflush(stdin);
		}
		
		switch (option)
		{
			case 1:
			{
				int number;
				printf("请输入教职工个数：");
				scanf("%d",&number);
				system("cls");
				n=n+number;
				for(int i=n-number; i<n; i++)
				{             
					Add(s, n, i);
				}
				n=WriteInformation(s, n);
				break;	
			}	
			case 2:
			{
				printf("读取成功！\n现在共有%d个人的数据\n",n); 
				Traversal(s,n);
				break;
			}
			case 0:
			{
				return n;
			}
			default: continue;  
	    }
	    system("pause");
	}
	return n;
}